package base.exa03_bitCalAndFor;

import java.util.Scanner;

/**
 * 计算1-n范围内的素数
 * 素数一般指质数，质数是指在大于1的自然数中，除了1和它本身以外不再有其他因数的自然数
 */
public class Demo3_QuestStudy {

    public static void main(String[] args) {
        int start , end ;
        Scanner reader  = new Scanner(System.in);
        System.out.println("请输入数字上限： ");
        end = reader.nextInt();
        int i = 0;
        //根据end计算1到end之间所有素数
        for (start = 2; start < end; start += 1) {
            // 计算一个数的平方根
            // int k = (int) Math.sqrt(start);
            int k = start;
            for(int j = 1;j <= k/2; j++) {
                if(j*j <= k && (j+1)*(j+1)>k) {
                    k = j;
                    break;
                }
            }
            for (i = 2; i <= k; i++) {
                //如果start能被除本身和1外的其他数整除，不是素数
                if (start % i == 0)
                    break;
            }
            // 否则，是素数
            if (i == k + 1) {
                System.out.println(start);
            }
        }
    }
}
